/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.svh.Paginator;

import com.svh.Hibernate.HibernateConexion;
import com.svh.Hibernate.HibernatePaginator;
import com.svh.Hibernate.IConexionHibernate;
import com.svh.Utils.IConexion;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

/**
 *
 * @author Luis Alonso Ballena Garcia
 * Esta clase paginador esta obteniendo la implementacion de la clase
 * LazyDataModel de Primefaces
 * 
 */
public class Paginador<T> extends LazyDataModel<T> implements Serializable{
    
    private  IConexion conexion = null;
    private  HibernatePaginator<T> paginacion = null;

    public Paginador(HibernatePaginator<T> paginacion) {
        conexion = new HibernateConexion();
        this.paginacion = paginacion;
        this.paginacion.setConexion((IConexionHibernate) conexion);
        paginacion.initFiltro();
        paginacion.cloneCriteria();
    }

   
    @Override
    public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
        conexion.beginConexion();
        int totalRows = paginacion.getTotalRows();
        this.setRowCount(totalRows);
        List<T> auxList = paginacion.getListElementsForPage(first, pageSize);
        conexion.closeConexion();
        return auxList;
    }
    
    public List<T> getAllList(){
        conexion.beginConexion();
        List<T> list = paginacion.allList();
        conexion.closeConexion();
        return list;
    }
    
}
